package mydb

import (
	"database/sql"
	"log"

	_ "github.com/go-sql-driver/mysql"
)

type Mydb struct {
	db *sql.DB
}

func (this *Mydb) Init() *sql.DB {
	var (
		db  *sql.DB
		err error
	)
	db, err = sql.Open("mysql", "xiongyi:cexoyq1020@tcp(192.168.1.254:3306)/ccnu_yw?charset=utf8")
	//数据库连接字符串，端口一定要写/
	if err != nil { //连接成功 err一定是nil否则就是报错
		panic(err.Error())                          //抛出异常
		log.Println("sql.open err : ", err.Error()) //仅仅是显示异常
	}
	//defer db.Close()
	db.SetMaxOpenConns(2000)
	db.SetMaxIdleConns(1000)
	this.db = db
	return db
}

func (this *Mydb) Query(sql string, args ...interface{}) (*sql.Rows, error) {
	if this.db.Ping() != nil {
		log.Fatalln("数据库连接已断开")
	}
	return this.db.Query(sql, args...)
}

func (this *Mydb) QueryRow(sql string, args ...interface{}) *sql.Row {
	if this.db.Ping() != nil {
		log.Fatalln("数据库连接已断开")
	}
	return this.db.QueryRow(sql, args...)
}

func (this *Mydb) Exec(sql string, args ...interface{}) error {
	if this.db.Ping() != nil {
		log.Fatalln("数据库连接已断开")
	}
	_, err := this.db.Exec(sql, args...)
	return err
}

func (this *Mydb) Test1(sqlstr string) error {
	var (
		rows *sql.Rows
		err  error
		l    string
	)
	if this.db.Ping() != nil {
		log.Fatalln("数据库连接已断开")
	}
	sqlstr = "select lyfj_name from t1_xm_lyfj where xm_id=?"
	rows, err = this.db.Query(sqlstr, 1)
	//判断err是否有错误的数据，有err数据就显示panic的数据
	if err != nil {
		panic(err.Error())
		log.Println(err.Error())
		return err
	}
	defer rows.Close()
	for rows.Next() { //开始循环
		err = rows.Scan(&l) //数据指针，会把得到的数据，往刚才id 和 lvs引入
		if err == nil {
			log.Println("l是", l)
		}
	}
	rows.Close()
	return err
}

func (this *Mydb) Test2(sqlstr string) error {
	var (
		rows *sql.Rows
		err  error
		l    string
	)
	if this.db.Ping() != nil {
		log.Fatalln("数据库连接已断开")
	}
	sqlstr = "select lyfj_name from t1_xm_lyfj where xm_id=?"
	rows, err = this.db.Query(sqlstr, 1)
	//判断err是否有错误的数据，有err数据就显示panic的数据
	if err != nil {
		panic(err.Error())
		log.Println(err.Error())
		return err
	}
	defer rows.Close()
	for rows.Next() { //开始循环
		err = rows.Scan(&l) //数据指针，会把得到的数据，往刚才id 和 lvs引入
		if err == nil {
			log.Println("l是", l)
		}
	}
	rows.Close()
	return err
}
